// -------------------------------------------------------------------------
// Copyright (c) 2000-2009 Ufinity. All Rights Reserved.
//
// This software is the confidential and proprietary information of
// Ufinity
//
// Original author: lxt
//
// -------------------------------------------------------------------------
// UFINITY MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
// THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
// TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UFINITY SHALL NOT BE
// LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
//
// THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
// CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
// PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
// NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
// SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
// SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
// PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). UFINITY
// SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
// HIGH RISK ACTIVITIES.
// -------------------------------------------------------------------------

package com.ufinity.estimation.service.impl;

import java.util.List;
import java.util.Map;

import com.cn.ufinity.common.log.LoggerFactory;
import com.ufinity.estimation.persistence.domain.Project;
import com.ufinity.estimation.persistence.domain.ProjectHouseStructure;
import com.ufinity.estimation.service.ProjectHouseStructureService;

/**
 * Description of the class
 * 
 * @author lxt
 * @version 1.0
 * @since 2009-12-14
 */

public class ProjectHouseStructureServiceImpl extends
        BaseServiceImpl<ProjectHouseStructure, Long> implements
        ProjectHouseStructureService {
    public ProjectHouseStructureServiceImpl() {
        super(LoggerFactory
                .getPersistenceLog(ProjectHouseStructureServiceImpl.class),
                ProjectHouseStructure.class);
    }

    @Override
    public void updateEntity(Long projectId,
            Map<Long, ProjectHouseStructure> projectHouseStructures, List<ProjectHouseStructure> newphs) {
        String hql = "from ProjectHouseStructure phs where phs.projectId = ?";
        List<ProjectHouseStructure> result = getHibernateTemplate().find(hql, projectId);
        for(int i = 0; i < result.size(); i++) {
             ProjectHouseStructure phs = result.get(i);
            if (projectHouseStructures.get(phs.getId()) != null) {
                phs.setStructureName(projectHouseStructures.get(phs.getId()).getStructureName());
                phs.setOrder(projectHouseStructures.get(phs.getId()).getOrder());
                updateEntity(phs);
            } else {
                deleteEntity(phs.getId());
            }
        }
        
        for (int i = 0; newphs != null && i < newphs.size(); i++) {
            ProjectHouseStructure phs = newphs.get(i);
            phs.setProjectId(projectId);
            saveEntity(phs);
        }
        
    }
}
